<?php
/**
 * @author Demianchuk Dmitro
 * @email d.demianchuk@gmail.com
 * @date 24.12.11
 * @version 1.0
 * @package adminArea.components.ATableEditor
 */

//Импортируем класс виджета таблици
Yii::import('zii.widgets.grid.CGridView');

class AGridView extends CGridView
{
	/**
	 * @var AActiveRecord - модель с которой будет рабатать грид
	 */
	public $model;

	public $pager = array(
		'class'=>'CLinkPager',
		'firstPageLabel' => '&lt;&lt;',
		'prevPageLabel' => '&lt;',
		'nextPageLabel' => '&gt;',
		'lastPageLabel' => '&gt;&gt;',
		'header' => '',
	);

	public $template = '{items} {pager} {summary}';

	public $summaryText = '<strong>Показано:</strong> {start} - {end} <strong>Всего:</strong> {count}';

	public $ajaxUpdate = false;

	/**
	 * Метод возвращает конфиг кнопок
	 * @param string $template - шаблон отображения кнопок
	 * @return array
	 */
	public function getButtonsConfig($template='{update} {delete}'){
		$controllerName = Yii::app()->controller->id;
		$actionName = Yii::app()->controller->action->id;
		return array(
			'class'=>'CButtonColumn',
			'deleteConfirmation'=>"js:'Запись с ID '+$(this).parent().parent().children(':first-child').text()+' будет удалена! Продолжить?'",
			'template'=>$template,
			'buttons'=>array(
				'delete'=>array(
					'options'=>array(
						'title'=>'Удалить',
					),
					'url'=>'Yii::app()->controller->createUrl("'.$controllerName.'/'.$actionName.'",array("delete"=>$data->id))',
				),
				'update'=>array(
					'options'=>array(
						'title'=>'Редактировать',
					),
				),
				'up'=>array(
					'label'=>'&uarr;',
					'options'=>array(
						'title'=>'Вверх',
						'style'=>'text-decoration:none;font-size:18px;color:red;',
					),
					'url'=>'Yii::app()->controller->createUrl("'.$controllerName.'/'.$actionName.'", array("up"=>$data->id))',
				),
				'down'=>array(
					'label'=>'&darr;',
					'options'=>array(
						'title'=>'Вниз',
						'style'=>'text-decoration:none;font-size:18px;color:red;',
					),
					'url'=>'Yii::app()->controller->createUrl("'.$controllerName.'/'.$actionName.'", array("down"=>$data->id))',
				),
			),
			'htmlOptions'=>array(
				'width'=>'1%',
				'nowrap'=>'',
			),
		);
	}

	/**
	 * @return array - конфиг колонки ID
	 */
	public function getIdColumnConfig(){
		return array(
			'name'=>'id',
			'htmlOptions'=>array(
				'width'=>'1%',
			),
		);
	}

	private function registerJsCss(){
		$assets = Yii::app()->assetManager->publish(
			Yii::getPathOfAlias('adminArea.components.ATableEditor.assets.*'), true, -1, YII_DEBUG
		);
		$this->cssFile = $assets . '/css/grid.css';
	}

	public function init(){
		$this->model->deleteRow();
		$this->registerJsCss();

		//Добавляем спереди колонку Id
		$this->columns = array_merge(array($this->getIdColumnConfig()), $this->columns);
		//Добавляем кнопочку Добавления в таблицу
		$this->summaryText = $this->summaryText.
			' <a href="'.Yii::app()->controller->createUrl('update',array('id'=>0)).'">Добавить</a>';
		//Есть ли в таблице колонка 'position'
		if($this->model->isPosition()){
			$this->model->upDownRow();
			//Добавляем кнопочки редактирования
			$this->columns = array_merge($this->columns,
				array($this->getButtonsConfig('{up} {down} {update} {delete}')));
			//Отключаем сортировку
			$this->enableSorting = false;
		}else{
			//Включаем сортировку
			$this->enableSorting = true;
			//Добавляем кнопочки редактирования
			$this->columns = array_merge($this->columns,array($this->getButtonsConfig()));
		}
		//var_dump($this->columns);exit;
		$this->dataProvider = $this->model->search();
		parent::init();
	}
}
